循环顺序错误导致的无效遍历
记录一下一个编程坏习惯导致的错误
c++要记录一段代码的运行时间很简单
clock_t start = clock();
//执行的代码
double t = (double)(clock() - start) / CLOCKS_PER_SEC;
std::cout << "code runtime:" << t << "s" << std::endl;
今天在跑代码的时候就发现有一段代码要运行很久
是一个两层循环,遍历次数也不多,不应该跑这么慢的
大致框架如下
for (auto a : A)
{
for (auto b : B)
{
c = fun1(b);
fun2(a, c);
}
}
不仔细看的话,还真看不出有什么问题
后面才发现fun1经过了很多次无效循环
内外循环顺序应该颠倒过来
像下面这样子
for (auto b : B)
{
c = fun1(b);
for (auto a : A)
{
fun2(a, c);
}
}
以往除了遍历图片像素会想一想内外循环的顺序,其他都是没怎么注意
以后遇到多层循环要留个心眼,最先用到的变量对应的循环应该考虑放最外面
当然上面只是一个例子,并不适用于所有情况